package cn.flying.system.service.cm;

import java.util.List;

import cn.flying.base.common.vo.TreeSelectInfo;
import cn.flying.base.common.vo.XmSelect;
import cn.flying.system.common.vo.MenuInfo;
import cn.flying.system.common.vo.ResTreeVo;
import cn.flying.system.common.vo.ResourceUrlVo;
import cn.flying.system.domain.cm.CmResource;
import cn.flying.system.domain.cm.CmResourceUrl;

/**
 * @description: 权限资源接口
 * @author: lvyong
 * @date: 2023年05月30日 00:31
 * @version: 1.0
 */
public interface CmResourceService {

    /**
     * 查询所有的菜单资源
     *
     * @param username
     * @return
     */
    List<MenuInfo> getPermsResource(String username);

    /**
     * 加载菜单资源树
     *
     * @return
     */
    List<TreeSelectInfo> getMenuTree();

    /**
     * 获取资源treetable
     *
     * @return
     */
    List<CmResource> getResourceTreeTableList();

    /**
     * 查询资源url列表数据
     *
     * @param resId
     * @return
     */
    List<CmResourceUrl> getResourcePageUrlList(String resId);

    /**
     * 查询资源信息
     *
     * @param resId
     * @return
     */
    CmResource getResourceByResId(String resId);

    /**
     * 根据ID查询资源信息
     *
     * @param id
     * @return
     */
    CmResource getResourceById(Long id);

    /**
     * 资源菜单下拉树形结构
     *
     * @return
     */
    List<XmSelect> getResourceSelectList();

    /**
     * 加载ztree 资源树形结构
     *
     * @return
     */
    List<ResTreeVo> getResourceTree();

    /**
     * 保存资源信息
     *
     * @param resource
     */
    void insertResource(ResourceUrlVo resource);

    /**
     * 更新资源信息
     *
     * @param resource
     */
    void updateResource(ResourceUrlVo resource);

    /**
     * 更新资源信息
     *
     * @param resource
     */
    void updateResourceById(CmResource resource);

    /**
     * 删除资源
     *
     * @param id
     */
    void deleteResourceById(Long id);

}
